//这里有 n 个航班，它们分别从 1 到 n 进行编号。 
//
// 我们这儿有一份航班预订表，表中第 i 条预订记录 bookings[i] = [j, k, l] 意味着我们在从 j 到 k 的每个航班上预订了 l 个座
//位。 
//
// 请你返回一个长度为 n 的数组 answer，按航班编号顺序返回每个航班上预订的座位数。 
//
// 
//
// 示例： 
//
// 
//输入：bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5
//输出：[10,55,45,25,25]
// 
//
// 
//
// 提示： 
//
// 
// 1 <= bookings.length <= 20000 
// 1 <= bookings[i][0] <= bookings[i][1] <= n <= 20000 
// 1 <= bookings[i][2] <= 10000 
// 
// Related Topics 数组 数学 
// 👍 104 👎 0


package com.yun.leetcode.editor.cn;

import java.util.Arrays;

public class CorporateFlightBookings {
    public static void main(String[] args) {
        Solution solution = new CorporateFlightBookings().new Solution();
        int[][] bookings = new int[][]{{1,2,10},{2,3,20},{2,5,25}};
        System.out.println(Arrays.toString(solution.corpFlightBookings(bookings, 5)));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int[] corpFlightBookings(int[][] bookings, int n) {
            int[] answer = new int[n];
            for (int[] booking : bookings) {
                // 从i 到 j， 预订了 k个座位
                int from = booking[0];
                int to = booking[1];
                int seatCount = booking[2];
                int start = from - 1;
                while (start < to) {
                    answer[start] += seatCount;
                    start++;
                }
            }

            return answer;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}